邏輯迴歸 (Logistic regression) 是由線性迴歸變化而來的,它是一種分類的模型。其目標是要找出一條直線能夠將所有數據清楚地分開並做分類,我們又可以稱迴歸的線性分類器。邏輯迴歸其實是在說明一個機率的意義,透過一個 function 去訓練得到的一組參數,不同的 w,b 就會得到不同的 function。於是我們可以說 fw,b(x) 即為 posteriror probability。
邏輯迴歸是用來處理分類問題,目標是找到一條直線可以將資料做分類。主要是利用 sigmoid function 將輸出轉換成 0~1 的值,表示可能為這個類別的機率值。而線性迴歸是用來預測一個連續的值,目標是想找一條直線可以逼近真實的資料。
邏輯迴歸是一個最基本的二元線性分類器。我們要找一個機率 (posterior probability) 當機率 P(C1|x) 大於 0.5 時則輸出預測 Class 1,反之機率小於 0.5 則輸出 Class 2。如果我們假設資料是 Gaussian 機率分佈,我們可以說這個 posterior probability 就是 σ(z)。其中 z=w*x+b
,x 為輸入特徵,而 w 與 b 分別為權重(weight)與偏權值(bias) 他們是透過訓練得到的一組參數。
以下就是一個邏輯迴歸的運作機制,如果以圖像化表示會長這樣。我們的 function 會有兩組參數,一組是 w 我們稱為 weight,另一個常數 b 稱為 bias。假設我們有兩個輸入特徵,並將這兩個輸入分別乘上 w 再加上 b 就可以得到 z,然後通過一個 sigmoid function 得到的輸出就是 posterior probability。
在邏輯迴歸中我們定義的損失函數是要去最小化的對象是所有訓練資料 cross entropy 的總和。我們希望模型的輸出要跟目標答案要越接近越好。因此我們可以將最小化的目標寫成一個函數:
最後是尋找一組最好的參數,使得 loss 能夠最低。因此這裡採用梯度下降 (Gradient Descent) 來最小化交叉熵 (Cross Entropy)。我們將損失函數對權重求偏導後,可以得到下面的權重更新的式子:
在 Sklearn 中也能使用邏輯迴歸分類器應用在多類別的分類問題上,對於多元邏輯迴歸有 one-vs-rest(OvR) 和 many-vs-many(MvM) 兩種方法。兩者的做法都是將所有類別的資料依序作二元分類訓練。MvM 相較於 OvR 比較精準,但 liblinear
只支援 OvR。
邏輯迴歸雖然有迴歸兩字但他其實是被用來做分類的,目的是要找出一條直線能夠將兩個類別分開。本範例採用鳶尾花朵資料集做分類器實驗,希望能夠透過線性分類器將三個類別彼此區隔開。
Parameters:
Attributes:
Methods:
from sklearn.linear_model import LogisticRegression
# 建立Logistic模型
logisticModel = LogisticRegression(random_state=0)
# 使用訓練資料訓練模型
logisticModel.fit(X_train, y_train)
# 使用訓練資料預測分類
predicted = logisticModel.predict(X_train)
我們可以直接呼叫 score()
直接計算模型預測的準確率。
# 預測成功的比例
print('訓練集: ',logisticModel.score(X_train,y_train))
print('測試集: ',logisticModel.score(X_test,y_test))
輸出結果:
訓練集: 0.9714285714285714
測試集: 0.9333333333333333
透過 Sklearn 的 LogisticRegression
可以實作一個典型的二元分類器。不過當有多個類別的時候,我們可以透過參數 multi_class
來設定多元分類器的學習機制。我們可以觀察一下訓練好的模型在測試集上的預測能力,為了方便觀察訓練結果,因此我們只挑選其中兩個特徵並繪製平面的點散圖。下圖中左邊的是測試集的真實分類,右邊的是模型預測的分類結果。
文章同時發表於: https://andy6804tw.github.io/crazyai-ml/9.邏輯迴歸
如果你對機器學習和人工智慧(AI)技術感興趣,歡迎參考我的線上免費電子書《經典機器學習》。這本書涵蓋了許多實用的機器學習方法和技術,適合任何對這個領域有興趣的讀者。點擊下方連結即可獲取最新內容,讓我們一起深入了解AI的世界!
👉 全民瘋AI系列 [經典機器學習] 線上免費電子書
👉 其它全民瘋AI系列 這是一個入口,匯集了許多不同主題的AI免費電子書